package com.superpai.view.helper;

import android.os.AsyncTask;

/**
 * @author Devin.Hu
 * @date 2011-8-14
 * @version V1.0
 * @description 页面任务类：用来处理与服务器交互的操作
 */
public class BaseTask {

	/**数据处理类**/
	private DataTask mTask;
	/**连接类型**/
	private int mConnectionType;
	/**数据处理监听**/
	private IDataConListener mDataListener;
	/**连接状态**/
	private boolean isConnection = false;

	/**
	 * 开启一个连接
	 */
	public void connection(int connectionType) {
		if(null == mTask && !isConnection()){
			isConnection = true;
			mConnectionType = connectionType;
			mTask = new DataTask();
			mTask.execute();
		}
	}

	/**
	 * 是否正在连接
	 *
	 * @return
	 */
	public boolean isConnection(){
		if(!isConnection && mTask==null){
			return false;
		}
		return true;
	}
	
	/**
	 * 关闭当前连接
	 */
	public void disConnection() {
		isConnection = false;
		if (null != mTask) {
			mTask.cancel(true);
		}
		mTask = null;
	}


	/**
	 * 设置监听
	 * @param mDataListener
	 */
	public void setmDataListener(IDataConListener mDataListener) {
		this.mDataListener = mDataListener;
	}



	/**
	 * @author Devin.Hu
	 * @date 2011-8-14
	 * @version V1.0
	 * @description 任务处理类：执行后台耗时比较久的操作
	 */
	class DataTask extends AsyncTask {

		@Override
		protected Object doInBackground(Object... params) 
		{
			Object obj = mDataListener.doDataConnection(mConnectionType);
			publishProgress(obj);
			return null;
		}

		@Override
		protected void onProgressUpdate(Object...values) 
		{
			mDataListener.doProcessData(mConnectionType, values);
			isConnection = false;
			if(null != mTask)mTask.cancel(true);
			mTask = null;
		}

	}
}
